home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / MM3Tp.sea Folder / Sample template file / mmModalDialog.p
Text File  |  1993-12-16  |  22KB  |  637 lines

  1. ##Loop ModalDialogs
  2. ##Message MM Modal Dialog, mm:mmD_#Worksheet.name#.p
  3.  
  4. ##File mm:mmD_#Worksheet.name#.p
  5. Unit mmD_#Worksheet.name#;
  6. {  mmD_#Worksheet.name#                                 Handle this dialog }
  7. {  #CopyRight# }
  8.  
  9. {    File name:  mmD_#Worksheet.name#
  10.     Function:  Handle this modal dialog.
  11.  
  12.     This dialog is called when:
  13.  
  14.     History: #Date# Original by #Author#
  15.  
  16. }
  17.  
  18.  
  19. interface
  20.  
  21.     uses
  22.         Printing,Folders,Sound,mmCommon#Prototype.name#,Common#Prototype.name#,    {}
  23. ##Loop Alerts
  24.         mmPA_#Worksheet.name#,
  25. ##EndLoop
  26.         U#Worksheet.name#;
  27.  
  28. procedure InitD_#Worksheet.name#;
  29. procedure MPD_#Worksheet.name#;
  30.  
  31. { ======================================================= }
  32. { ======================================================= }
  33.  
  34. implementation
  35.  
  36. { ======================================================= }
  37. { ======================================================= }
  38.  
  39. { Routine: InitD_#Worksheet.name# }
  40. { Purpose: Initialize the modal dialog, globals and call users routine }
  41.  
  42. procedure InitD_#Worksheet.name#;
  43.  
  44.  
  45. begin
  46. Rec_#Worksheet.name#.theDialog := nil;
  47.  
  48. ##Loop Control.type = Button
  49. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Button }
  50. ##EndLoop
  51. ##Loop Control.type = HotRect
  52. ##if Control.HotSpot
  53. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { HotSpot  }
  54. ##endif
  55. ##EndLoop
  56. ##Loop Control.type = Checkbox
  57. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Checkbox  }
  58. ##if Control.Selected
  59. Rec_#Worksheet.name#.Value_#Control.name# := 1;
  60. ##endif
  61. ##if Control.Unselected
  62. Rec_#Worksheet.name#.Value_#Control.name# := 0;
  63. ##endif
  64. ##EndLoop
  65. ##Loop Control.type = Radio
  66. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Radio }
  67. ##if Control.Selected
  68. Rec_#Worksheet.name#.Value_#Control.name# := 1;
  69. ##endif
  70. ##if Control.Unselected
  71. Rec_#Worksheet.name#.Value_#Control.name# := 0;
  72. ##endif
  73. ##EndLoop
  74. ##Loop Control.type = ScrollBar
  75. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { ScrollBar }
  76. Rec_#Worksheet.name#.Value_#Control.name# := #Control.ValueScroll#;
  77. ##EndLoop
  78. ##Loop Control.type = Icon
  79. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Icon button  }
  80. ##EndLoop
  81. ##Loop Control.type = Sicn
  82. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Sicn button  }
  83. ##EndLoop
  84. ##Loop Control.type = Picture
  85. ##if Control.NonGraphic
  86. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Picture button  }
  87. ##endif
  88. ##EndLoop
  89. ##Loop Control.type = UButton
  90. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Plugin button }
  91. ##EndLoop
  92. ##Loop Control.type = UToggle
  93. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Plugin toggle }
  94. ##if Control.Selected
  95. Rec_#Worksheet.name#.Value_#Control.name# := 1;
  96. ##endif
  97. ##if Control.Unselected
  98. Rec_#Worksheet.name#.Value_#Control.name# := 0;
  99. ##endif
  100. ##EndLoop
  101. ##Loop Control.type = UGauge
  102. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Plugin gauge }
  103. Rec_#Worksheet.name#.Value_#Control.name# := #Control.ValueScroll#;
  104. ##EndLoop
  105. ##Loop Control.type = Popup
  106. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Popup menu }
  107. Rec_#Worksheet.name#.Value_#Control.name# := #Control.SelectedID#;
  108. ##EndLoop
  109. ##Loop Control.type = Palette
  110. Rec_#Worksheet.name#.Enable_#Control.name# := #Control.Active#;        { Palette }
  111. Rec_#Worksheet.name#.Value_#Control.name# := #Control.ValueScroll#;
  112. ##EndLoop
  113. ##Loop Control.type = List
  114. Rec_#Worksheet.name#.List_#Control.name# := nil;                        { List }
  115. SetRect(Rec_#Worksheet.name#.ListRect_#Control.name#,#Control.LeftPosition#,#Control.TopPosition#,#Control.RightPosition#,#Control.BottomPosition#);                { left,top,right,bottom }
  116. ##EndLoop
  117. ##Loop Control.type = EditText
  118. Rec_#Worksheet.name#.TE_#Control.name# := nil;                        { Edit Text }
  119. SetRect(Rec_#Worksheet.name#.TERect_#Control.name#,#Control.LeftPosition#,#Control.TopPosition#,#Control.RightPosition#,#Control.BottomPosition#);                { left,top,right,bottom }
  120. GetIndString(Rec_#Worksheet.name#.TEStr_#Control.name#,sResD_#Control.name#,1);{  ...Edit text, default value  }
  121. ##EndLoop
  122.  
  123. D_Init_#Worksheet.name#;
  124. end;
  125.  
  126. { ======================================================= }
  127.  
  128. { Routine: MyFilter }
  129. { Purpose: Filter routine for dialog events }
  130.  
  131. function MyFilter(theDialog:DialogPtr;var theEvent:EventRecord;var itemHit:integer):Boolean;
  132. var
  133.     MyPt:Point;                                { Current list selection point }
  134.     tempRect:Rect;                            { Temporary rectangle }
  135.     DType:integer;                            { Type of dialog item }
  136.     DItem:Handle;                            { Handle to the dialog item }
  137.     CItem:ControlHandle;                    { Control handle }
  138.     chCode:integer;                            { Key entered }
  139.     code:integer;                            { Used for FindControl }
  140.     LTemp:longint;                            { Used for time delay }
  141.     MyCmdKey:char;                            { The command key }
  142.     CmdDown:Boolean;                        { Flag for command key used }
  143.     valMyFilter:Boolean;                    { Value to return }
  144.  
  145.  
  146. begin
  147. { Call the user routine }
  148. valMyFilter := D_Filter_#Worksheet.name#(theDialog,theEvent,itemHit);
  149.  
  150. { Only do on an update }
  151. if ((theEvent.what = updateEvt)  and (WindowPtr(theEvent.message) = theDialog)) then
  152.     begin
  153.     BeginUpdate(theDialog);                        { Start the update }
  154.     DrawDialog(theDialog);                        { Draw the controls }
  155.     valMyFilter := TRUE;                        { Pass out this special itemHit number }
  156.     itemHit := 32000;                            { Our special ID }
  157.     end;
  158.  
  159. if (theEvent.what = mouseDown) then                { Only do on a mouse click }
  160.     begin
  161.     MyPt := theEvent.where;                        { Get the point where the mouse was clicked }
  162.     GlobalToLocal(MyPt);                        { Convert global to local }
  163.  
  164.     ##Loop Control.type = List
  165.     if (PtInRect(MyPt,Rec_#Worksheet.name#.ListRect_#Control.name#)) then
  166.         ClickInTheList(MyPt,theEvent.modifiers,Rec_#Worksheet.name#.List_#Control.name#,#Control.TextSize#,#Control.TextFont#,#Control.TextStyle#,true);
  167.  
  168.     ##EndLoop
  169.     ##Loop Control.type = ScrollBar
  170.     GetDItem(theDialog,ResD_#Control.name#,DType,DItem,tempRect);{ Get the item }
  171.     if (PtInRect(MyPt,tempRect)) then
  172.         begin
  173.         CItem := ControlHandle(DItem);            { Make it a controlhandle }
  174.         code := TestControl(CItem,MyPt);            { Get where in the Scrollbar we were pressed }
  175.         HandleWScrollBar(MyPt,code,#Control.StepScroll#,#Control.PageScroll#,CItem);{ Handle the scrollbar }
  176.         end;
  177.  
  178.     ##EndLoop
  179.     ##Loop Control.type = UGauge
  180.     GetDItem(theDialog,ResD_#Control.name#,DType,DItem,tempRect);{ Get the item }
  181.     if (PtInRect(MyPt,tempRect)) then
  182.         begin
  183.         CItem := ControlHandle(DItem);            { Make it a controlhandle }
  184.         code := TestControl(CItem,MyPt);            { Get where in the gauge we were pressed }
  185.         HandleWScrollBar(MyPt,code,#Control.StepScroll#,#Control.PageScroll#,CItem);{ Handle the scrollbar }
  186.         end;
  187.  
  188.     ##EndLoop
  189.     end;
  190.  
  191. CheckKeysInDialog(theDialog,valMyFilter,theEvent,itemHit);
  192.  
  193. MyFilter := valMyFilter;
  194. end;
  195.  
  196. { ======================================================= }
  197.  
  198. { Routine: Refresh_Dialog }
  199. { Purpose: Refresh the dialogs non-controls }
  200.  
  201. procedure Refresh_Dialog;
  202. var
  203.     rTempRect:Rect;                            { Temp rectangle used for drawing }
  204.     DType:integer;                            { Type of dialog item }
  205.     DItem:Handle;                            { Handle to the dialog item }
  206.     CItem:ControlHandle;                    { Control handle }
  207. ##if Option.Color
  208.     Saved_ForeColor:RGBColor;                { Save colors }
  209.     Saved_BackColor:RGBColor;                { Save colors }
  210.     DrawingColor:RGBColor;                    { Place to make colors }
  211. ##endif
  212.  
  213.  
  214. begin
  215. SetPort(Rec_#Worksheet.name#.theDialog);        { Point to our dialog window }
  216. rTempRect := tempRect;                            { Save the current contents of  tempRect }
  217. ##if Option.Color
  218. if (Has.ColorQD) then                            { See if color QuickDraw is around }
  219.     begin
  220.     GetForeColor(Saved_ForeColor);                { Save the fore color }
  221.     GetBackColor(Saved_BackColor);                { Save the back color }
  222.  
  223.     RGBForeColor(Black_ForeColor);                { Set the fore color to Black }
  224.     RGBBackColor(White_BackColor);                { Set the back color to White }
  225.     end;
  226.  
  227. ##endif
  228. ##Loop Control.type = Button
  229. ##if Control.Default
  230. { This is the default selection, when RETURN is pressed. }
  231. HiliteDefaultButton(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#);
  232.  
  233. ##endif Control.Default
  234. ##EndLoop Control.type
  235. ##Loop Control.type = Line
  236. { Draw a line, #Control.FullName# }
  237. ##if Control.GrayLine
  238. PenPat(gray);                                        { Set the gray pen pattern }
  239. ##endif Control.GrayLine
  240. ##if Control.LineWidth ! 1
  241. PenSize(#Control.LineWidth#,#Control.LineWidth#);
  242. ##endif Control.LineWidth
  243. MoveTo(#Control.LeftPosition#,#Control.TopPosition#);        { Horz,vert, Move to starting position }
  244. LineTo(#Control.RightPosition#,#Control.BottomPosition#);    { Horz,vert, Draw to the ending position }
  245. ##if Control.LineWidth ! 1
  246. PenSize(1,1);
  247. ##endif Control.LineWidth
  248. ##if Control.GrayLine
  249. PenPat(black);                                        {  Back to default pen pattern  }
  250. ##endif Control.GrayLine
  251.  
  252. ##EndLoop
  253. ##Loop Control.type = StaticText
  254. ##if Control.SpecialText
  255. { Draw static text }
  256. ##if Option.Color
  257. ##if Control.TextColor ! Black
  258. if (Has.ColorQD) then                                    { See if color QuickDraw is around }
  259.     begin
  260.     DrawingColor.red := $#Control.RedTextColor#;
  261.     DrawingColor.green := $#Control.GreenTextColor#;
  262.     DrawingColor.blue := $#Control.BlueTextColor#;
  263.     RGBForeColor(DrawingColor);                    { Set the fore color }
  264.     RGBBackColor(Saved_BackColor);                    { Set the back color }
  265.     end;
  266. ##endif Control.TextColor
  267. ##endif Color
  268. ##if Control.MultipleLine
  269. SetRect(tempRect,#Control.LeftPosition#,#Control.TopPosition#,#Control.RightPosition#,#Control.BottomPosition#);
  270. DrawStaticTextBox(sResD_#Control.name#,tempRect,#Control.TextAlignment#,#Control.TextSize#,#Control.TextFont#,#Control.TextStyle#);
  271. ##endif Control.MultipleLine
  272. ##if Control.SingleLine
  273. DrawStaticLine(sResD_#Control.name#,#Control.LeftPosition#,#Control.TopPosition#,#Control.TextSize#,#Control.TextFont#,#Control.TextStyle#);
  274. ##endif Control.SingleLine
  275. ##if Option.Color
  276. ##if Control.TextColor ! Black
  277. if (Has.ColorQD) then                                    { See if color QuickDraw is around }
  278.     begin
  279.     RGBForeColor(Black_ForeColor);                    { Set the fore color }
  280.     RGBBackColor(White_BackColor);                    { Set the back color }
  281.     end;
  282. ##endif Control.TextColor
  283. ##endif Color
  284.  
  285. ##endif Control.SpecialText
  286. ##EndLoop
  287. ##Loop Control.type = List
  288. UpdateTheList(Rec_#Worksheet.name#.theDialog^.visRgn,Rec_#Worksheet.name#.List_#Control.name#,
  289.     Rec_#Worksheet.name#.ListRect_#Control.name#,#Control.TextSize#,#Control.TextFont#,#Control.TextStyle#,true);
  290.  
  291. ##EndLoop
  292. TextSize(12);
  293. TextFont(systemFont);                                { Select the Font that we want }
  294. TextFace([]);                                        { Select the style that we want }
  295.  
  296. ##if Option.Color
  297. if (Has.ColorQD) then                                { See if color QuickDraw is around }
  298.     begin
  299.     RGBForeColor(Saved_ForeColor);                { Restore the fore color }
  300.     RGBBackColor(Saved_BackColor);                { Restore the back color }
  301.     end;
  302. ##endif
  303.  
  304. D_Refresh_#Worksheet.name#(Rec_#Worksheet.name#.theDialog);                { Call user refresh routine }
  305. end;
  306.  
  307. { ======================================================= }
  308.  
  309. { Routine: MPD_#Worksheet.name# }
  310. { Purpose: Modal dialog }
  311.  
  312. procedure MPD_#Worksheet.name#;
  313. var
  314.     tempRect:Rect;                                    { Temporary rectangle }
  315.     DType:integer;                                    { Type of dialog item }
  316.     Index:integer;                                    { For looping }
  317.     DItem:Handle;                                    { Handle to the dialog item }
  318.     CItem:ControlHandle;                            { Control handle }
  319.     CTempItem:ControlHandle;                        { Control handle }
  320.     sTemp:Str255;                                    { Get text entered, temp holding }
  321.     itemHit:integer;                                { Get selection }
  322.     temp:integer;                                    { Get selection, temp holding }
  323.     theSelection:integer;                            { For Palettes }
  324.     theLong,LTemp2:longint;                            { For Hotspot setup }
  325.     theRow:integer;                                    { This is used to define the row used in a list }
  326.     ThisFontInfo:FontInfo;                            { Used to determine List element height }
  327.     ThisEditText:TEHandle;                            { Handle to get the Dialogs TE record }
  328.     TheDialogPtr:DialogPeek;                            { Pointer to Dialogs definition record, contains the TE record }
  329.     SavedPort:GrafPtr;                                { Previous grafport }
  330.     ExitDialog:Boolean;                             { Flag used to exit the Dialog }
  331.     MyPt:Point;
  332.  
  333.  
  334. begin
  335. GetPort(SavedPort);                                    { Get the previous grafport }
  336. HoldOffUserEvents := true;                            { Hold off the user events }
  337.  
  338. Rec_#Worksheet.name#.theDialog := GetNewDialog(ResD_#Worksheet.name#,nil,WindowPtr(-1));{ Bring in the dialog resource }
  339. SetPort(Rec_#Worksheet.name#.theDialog);            { Prepare to add conditional text }
  340. TheDialogPtr := DialogPeek(Rec_#Worksheet.name#.theDialog);    { Get to the inner record }
  341. ThisEditText := TheDialogPtr^.textH;                    { Get to the TE record }
  342. HLock(Handle(ThisEditText));                        { Lock it for safety }
  343. ThisEditText^^.txSize := 12;                        { TE Point size }
  344. TextSize(12);                                        { Window Point size }
  345. ThisEditText^^.txFont := systemFont;                { TE Font ID }
  346. TextFont(systemFont);                                { Window Font ID }
  347. ThisEditText^^.txFont := 0;                            { TE Font ID }
  348. ThisEditText^^.fontAscent := 12;                    { Font ascent }
  349. ThisEditText^^.lineHeight := 12 + 3 + 1;            {  Font ascent + descent + leading  }
  350. HUnlock(Handle(ThisEditText));                        { UnLock the handle when done }
  351.  
  352. ##if Worksheet.Center
  353. tempRect := Rec_#Worksheet.name#.theDialog^.portRect;            { Get the windows position and size }
  354. ##if Worksheet.CenterHorz
  355. tempRect.left := ((screenBits.bounds.right - screenBits.bounds.left) - (tempRect.right - tempRect.left)) div 2;    { Center Horz }
  356. ##endif Worksheet.CenterHorz
  357. ##if Worksheet.CenterVert
  358. tempRect.top := ((screenBits.bounds.bottom - screenBits.bounds.top) - (tempRect.bottom - tempRect.top)) div 3;    { 1/3 vert }
  359. if (tempRect.top < 40) then                        { Keep below the menu bar }
  360.     tempRect.top := 40;
  361. ##endif Worksheet.CenterVert
  362. MoveWindow(Rec_#Worksheet.name#.theDialog,tempRect.left,tempRect.top,true);
  363. ##endif
  364.  
  365. ##Loop Control.type = Button
  366. { Button }
  367. SetupNormalControl(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,0);
  368.  
  369. ##EndLoop Button
  370. ##Loop Control.type = Checkbox
  371. { Checkbox }
  372. SetupNormalControl(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  373.     Rec_#Worksheet.name#.Value_#Control.name#);
  374.  
  375. ##EndLoop Checkbox
  376. ##Loop Control.type = Radio
  377. { Radio button }
  378. SetupNormalControl(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  379.     Rec_#Worksheet.name#.Value_#Control.name#);
  380.  
  381. ##EndLoop Radio
  382. ##Loop Control.type = List
  383. { Make a List }
  384. Make_A_List(Rec_#Worksheet.name#.List_#Control.name#,Rec_#Worksheet.name#.ListRect_#Control.name#,
  385.     Rec_#Worksheet.name#.theDialog,sResD_#Control.name#,#Control.TextSize#,#Control.TextFont#,#Control.TextStyle#,true);
  386.  
  387. ##EndLoop
  388. ##Loop Control.type = HotRect
  389. { Draw a Hotspot or Rectangle }
  390. SetupHotSpot(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,#Control.MakeHotSpot#,#Control.LineWidth#,
  391.     #Control.ShadowWidth#,sResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#);
  392.  
  393. ##EndLoop
  394. ##Loop Control.type = EditText
  395. GetDItem(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,DType,DItem,tempRect);{ Get the item handle }
  396. GetIndString(sTemp,sResD_#Control.name#,1);            { ...Edit text, default value }
  397. SetIText(DItem,sTemp);                                { Set the default text string }
  398. SelIText(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,0,300);
  399.  
  400. ##EndLoop
  401. ##Loop Control.type = Popup
  402. SetupPopupMenu(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  403.     mResD_#Control.name#,Rec_#Worksheet.name#.Value_#Control.name#);
  404.  
  405. ##EndLoop
  406. ##Loop Control.type = Picture
  407. ##if Control.NonGraphic
  408. { Draw a picture }
  409. LTemp := ResD_N_#Control.name#;                        { Picture ID and resize flag }
  410. ##if Control.ClipPicture
  411. LTemp := BOR($00010000,LTemp);
  412. ##endif Control.ClipPicture
  413. SetupTheItem(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,true,true,
  414.     Rec_#Worksheet.name#.Enable_#Control.name#,false,tempRect,LTemp,0);{ Setup the Picture button }
  415.  
  416. ##endif Control.NonGraphic
  417. ##EndLoop
  418. ##Loop Control.type = Palette
  419. { Draw a Palette }
  420. SetupPalette(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  421.     #Control.NumRows#,#Control.NumColumns#,ResD_N_#Control.name#,#Control.HMethod#);
  422.  
  423. ##EndLoop
  424. ##Loop Control.type = Icon
  425. ##if Control.NonGraphic
  426. { Draw an Icon button }
  427. SetupIconSicn(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  428.     ResD_N_#Control.name#,ResD_H_#Control.name#);
  429.  
  430. ##endif Control.NonGraphic
  431. ##EndLoop
  432. ##Loop Control.type = Sicn
  433. { Draw an Sicn }
  434. ##if Control.Graphic
  435. SetupIconSicn(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  436.     ResD_N_#Control.name#,ResD_N_#Control.name#);
  437. ##endif Control.Graphic
  438. ##if Control.NonGraphic
  439. SetupIconSicn(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  440.     ResD_N_#Control.name#,ResD_H_#Control.name#);
  441. ##endif Control.NonGraphic
  442.  
  443. ##EndLoop
  444. ##Loop Control.type = UButton
  445. SetupPlugin(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  446.     ResD_N_#Control.name#,ResD_H_#Control.name#,sResD_#Control.name#);
  447.  
  448. ##EndLoop
  449. ##Loop Control.type = UToggle
  450. SetupPlugin(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  451.     ResD_N_#Control.name#,ResD_H_#Control.name#,sResD_#Control.name#);
  452.  
  453. ##EndLoop
  454. ##Loop Control.type = UGauge
  455. SetupPlugin(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Enable_#Control.name#,
  456.     ResD_N_#Control.name#,ResD_H_#Control.name#,sResD_#Control.name#);
  457. SetupMinMaxValue(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,#Control.MinScroll#,#Control.MaxScroll#,Rec_#Worksheet.name#.Value_#Control.name#);
  458.  
  459. ##EndLoop
  460. ##Loop Control.type = ScrollBar
  461. SetupTheItem(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,true,true,
  462.     Rec_#Worksheet.name#.Enable_#Control.name#,true,tempRect,0,0);
  463. SetupMinMaxValue(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,#Control.MinScroll#,#Control.MaxScroll#,Rec_#Worksheet.name#.Value_#Control.name#);
  464.  
  465. ##EndLoop
  466.  
  467. ExitDialog := false;                                    { Do not exit dialog handle loop yet }
  468.  
  469. ##Link    Worksheet.Open
  470.  
  471. D_Setup_#Worksheet.name#(Rec_#Worksheet.name#.theDialog);                { Call user Dialog setup routine }
  472.  
  473. ShowWindow(Rec_#Worksheet.name#.theDialog);                            { Open a dialog box }
  474. SelectWindow(Rec_#Worksheet.name#.theDialog);                            { Lets see it }
  475.  
  476. repeat                                                { Start of dialog handle loop }
  477.     ModalDialog(@MyFilter,itemHit);                    { Wait until an item is hit }
  478.  
  479.     D_Hit_#Worksheet.name#(Rec_#Worksheet.name#.theDialog,itemHit,ExitDialog);{ Let user handle the item hit }
  480.  
  481.     if (itemHit = 32000) then                        { Check for update }
  482.         begin
  483.         Refresh_Dialog;                                { Draw any Lists, lines, or rectangles }
  484.         EndUpdate(Rec_#Worksheet.name#.theDialog);     { End of the update }
  485.         end
  486.     else
  487.         begin
  488.         GetDItem(Rec_#Worksheet.name#.theDialog,itemHit,DType,DItem,tempRect);    { Get item information }
  489.         CItem := ControlHandle(DItem);                { Get the control handle }
  490.         end;
  491.  
  492.     { Handle it real time }
  493.     ##Loop Control.type = Button
  494.     if (itemHit = ResD_#Control.name#) then            { Handle the Button being pressed }
  495.         begin
  496.         ##Link    Control.Select
  497.         ##if Control.ExitDialog
  498.         ExitDialog := true;                            { Close this dialog, exit }
  499.         ##endif Control.ExitDialog
  500.         end;
  501.  
  502.     ##EndLoop Control.type
  503.     ##Loop Control.type = Checkbox
  504.     if (itemHit = ResD_#Control.name#) then            { Handle the checkbox being pressed }
  505.         begin
  506.         temp := GetCtlValue(CItem);                    { Get the current Checkbox value }
  507.         SetCtlValue(CItem,BAND((temp + 1),1));            { Toggle the value to the opposite }
  508.         Rec_#Worksheet.name#.Value_#Control.name# := GetCtlValue(CItem);    { Get the current Checkbox value }
  509.         ##if Control.HasLinks
  510.         if (Rec_#Worksheet.name#.Value_#Control.name# = 0) then
  511.             begin
  512.             ##Link    Control.Deselect
  513.             end
  514.         else
  515.             begin
  516.             ##Link    Control.Select
  517.             end;
  518.         ##endif
  519.         end;
  520.  
  521.     ##EndLoop Control.type
  522.     ##Loop Control.type = UButton
  523.     ##if Control.HasLinks
  524.     if (itemHit = ResD_#Control.name#) then            { Handle the Button being pressed }
  525.         begin
  526.         ##Link    Control.Select
  527.         end;
  528.  
  529.     ##endif
  530.     ##EndLoop Control.type
  531.     ##Loop Control.type = UToggle
  532.     if (itemHit = ResD_#Control.name#) then            { Handle the checkbox being pressed }
  533.         begin
  534.         temp := GetCtlValue(CItem);                    { Get the current Checkbox value }
  535.         SetCtlValue(CItem,BAND((temp + 1),1));            { Toggle the value to the opposite }
  536.         Rec_#Worksheet.name#.Value_#Control.name# := GetCtlValue(CItem);    { Get the current Checkbox value }
  537.         ##if Control.HasLinks
  538.         if (Rec_#Worksheet.name#.Value_#Control.name# = 0) then
  539.             begin
  540.             ##Link    Control.Deselect
  541.             end
  542.         else
  543.             begin
  544.             ##Link    Control.Select
  545.             end;
  546.         ##endif
  547.         end;
  548.  
  549.     ##EndLoop Control.type
  550.     ##Loop Control.type = Radio
  551.     if (itemHit = ResD_#Control.name#) then            { Handle the Radio being pressed }
  552.         begin
  553.         SetCtlValue(CItem,1);
  554.         Rec_#Worksheet.name#.Value_#Control.name# := 1;    { Set the current Radio value }
  555.  
  556.         ##Loop RadioGroup
  557.         ClearTheRadio(Rec_#Worksheet.name#.theDialog,ResD_#Control.name#,Rec_#Worksheet.name#.Value_#Control.name#);
  558.         ##EndLoop RadioGroup
  559.         ##Link    Control.Select
  560.         end;
  561.  
  562.     ##EndLoop Control.type
  563.     ##Loop Control.type = HotRect
  564.     ##if Control.HotSpot
  565.     ##if Control.HasLinks
  566.     if (itemHit = ResD_#Control.name#) then            { Handle the HotSpot being pressed }
  567.         begin
  568.         ##Link    Control.Select
  569.         end;
  570.  
  571.     ##endif
  572.     ##endif Control.HotSpot
  573.     ##EndLoop
  574.     ##Loop Control.type = Popup
  575. {Popup}
  576.  
  577.     ##EndLoop
  578.     ##Loop Control.type = Picture
  579.     ##if Control.NonGraphic
  580.     ##if Control.HasLinks
  581.     if (itemHit = ResD_#Control.name#) then                { Handle the Picture being pressed }
  582.         begin
  583.         ##Link    Control.Select
  584.         end;
  585.  
  586.     ##endif
  587.     ##endif Control.NonGraphic
  588.     ##EndLoop
  589.     ##Loop Control.type = Palette
  590. {Palette}
  591.  
  592.     ##EndLoop
  593.     ##Loop Control.type = Icon
  594.     ##if Control.NonGraphic
  595.     ##if Control.HasLinks
  596.     if (itemHit = ResD_#Control.name#) then            { Handle the Icon being pressed }
  597.         begin
  598.         ##Link    Control.Select
  599.         end;
  600.  
  601.     ##endif
  602.     ##endif Control.NonGraphic
  603.     ##EndLoop
  604.     ##Loop Control.type = Sicn
  605.     ##if Control.NonGraphic
  606.     ##if Control.HasLinks
  607.     if (itemHit = ResD_#Control.name#) then            { Handle the Sicn being pressed }
  608.         begin
  609.         ##Link    Control.Select
  610.         end;
  611.  
  612.     ##endif
  613.     ##endif Control.NonGraphic
  614.     ##EndLoop
  615.  
  616. until (ExitDialog);                                    { Handle dialog items until exit selected }
  617.  
  618. { Get results after dialog }
  619. D_Exit_#Worksheet.name#(Rec_#Worksheet.name#.theDialog);    { Exiting the modal dialog }
  620.  
  621. ##Link    Worksheet.Close
  622.  
  623. SetPort(SavedPort);                                    { Restore the previous grafport }
  624. DisposDialog(Rec_#Worksheet.name#.theDialog);        { Flush the dialog out of memory }
  625.  
  626. HoldOffUserEvents := false;                            { Let in the user events }
  627.  
  628. end;
  629.  
  630. { ======================================================= }
  631. { ======================================================= }
  632. end.
  633. ##CloseFile
  634. ##EndLoop
  635.  
  636.  
  637.